import { createApp } from "vue";
import App from "./App.vue";
import http from "@/api/http";
import md5 from "blueimp-md5";
import _ from "@/assets/utils";

/* const source = axios.CancelToken.source();

axios
  .post(
    "/user/login",
    // qs.stringify({
    //   account: "18310612838",
    //   password: md5("1234567890"),
    // }),
    {
      account: "18310612838",
      password: md5("1234567890"),
    },
    {
      baseURL: "/api", // 请求的通用前缀, 最后的请求地址: baseURL + url处理(特殊情况: 如果url中包含了http(s)://, 而baseURL中也包含这个东西, 则不会拼接, 直接以url为主就可以了)
      timeout: 6000, // 设置超时时间, 默认0则不设置超时,单位为MS
      cancelToken: source.token,
      validateStatus(status) {
        // 默认情况下, 服务器返回的HTTP状态码以2开始才算成功, 其余都算失败
        return status >= 200 && status < 300;
      },
      transformRequest(data) {
        // 只针对于post系列请求,在发送请求之前,对请求主体传递的对象data进行格式化处理
        // 不设置这个配置,默认会把data变为json字符串传递给服务器,一旦设置了这个配置项,返回的是啥值,
        // 则把啥值传递给服务器(对象会变为字符串[object Object])
        if (_.isPlainObject(data)) data = qs.stringify(data);
        return data;
      },
    }
  )
  .then((response) => {
    return response.data;
  })
  .then((value) => {
    console.log(value);
    // token存储到本地
    _.storage.set("token", value.token);
  })
  .catch((reason) => {
    // 请求失败要做提示:
    // 服务器有返回结果,但是状态码没见过validateStatus的校验 reason.response.status, 我们可以基于服务器返回的不同状态码做不同的提示
    // 请求超时 reason.code === 'ECONNABORTED'
    // 请求中断 axios.isCancel(reason)
    // 剩下的情况都可以理解为断网了
    console.log(reason, axios.isCancel(reason));
  });

// source.cancel("我取消了请求");
 */

http
  .post("/user/login", {
    account: "18310612838",
    password: md5("1234567890"),
  })
  .then((value) => {
    console.log("请求成功", value);
    _.storage.set("token", value.token);
  })
  .catch((err) => console.log(err));
createApp(App).mount("#app");
